Mobile electronic devices such as personal digital assistants (PDAs) and digital cellular telephones increasingly include applications written in the Java™ programming language. As they execute, these applications may need to access memory in one or more components of a mobile electronic device that is not mapped into the data memory space of the processor or processors executing the application, i.e., memory that is not addressable using load/store based instructions of the processor executing the applications. Such memory may be referred to as indirect memory. Examples of indirect memory include input/output (“I/O”) device memory, memory on a flash memory card, disk devices and non-addressable memory banks.
The elements of an indirect memory are accessed using a sequence of instructions that use other data, i.e., metadata, which uniquely identifies the element. This metadata, referred to herein as an element unique identifier (“euid”), may be defined by the system configuration of the mobile electronic device. The instruction sequences and the euid vary in size and complexity. For example, if the indirect memory is I/O device memory, the euid may be an I/O port address assigned to the I/O device in the system configuration and the code sequence to perform a read or a write may be a single instruction provided by a processor (e.g., IN or OUT on Intel processors). If the indirect memory is a disk device, the euid identifying an element may include a disk identifier, a disk directory, a file name, a sector identifier, and an offset into the sector, and the code sequence to read or write a disk element is more complex. Enhancements to permit ease of programming indirect memory accesses in Java are desirable.